// function arrToTree(data,key){
//     let items=[]
//     data.forEach(item => {
//         if(item.pid==key){
//             items.push(item)
//             items.children=arrToTree(data,item.id)
//         }
//     });
//     return items
// }

function arrToTree(items) {
    const map = new Map()
    let brr = []
    items.forEach(item => {
        map.set(item.id, {
            ...item,
            children: []
        })
    })

    items.forEach(item => {
        let parentId = item.pid
        if (parentId != 0) {
            let parent = map.get(parentId)
            if (parent) {
                parent.children.push(map.get(item.id))
            }
        } else {
            if (!brr) {
                brr = []
            }
            brr.push(map.get(item.id))
        }
    })
    return brr || []
}



// function arrToTree(items) {  
//     // 创建一个Map来存储所有节点，以便快速查找  
//     const map = new Map();  
//     let brr = []
//     // 遍历所有节点，将节点存储到Map中，并初始化children数组  
//     items.forEach(item => {  
//         map.set(item.id, {  
//             ...item,  
//             children: []  
//         });  
//     });  

//     // 遍历所有节点，将它们添加到其对应的父节点的children数组中  
//     items.forEach(item => {  
//         const parentId = item.pid;  
//         if (parentId != 0) { // 假设pid为0的节点是根节点，不需要添加到其他节点的children中  
//             const parent = map.get(parentId);  
//             if (parent) {  
//                 parent.children.push(map.get(item.id));  
//             }  
//         } else {  
//             // pid为0的节点是根节点，我们可以将它们存储在一个单独的数组中  
//             // 这里为了简单起见，我们直接返回根节点的数组  
//             // 你可以根据需要修改这部分代码，例如将它们存储在一个特定的属性中  
//             if (!brr) {  
//                 brr = [];  
//             }  
//             brr.push(map.get(item.id));  
//         }  
//     });  

//     // 如果需要，返回根节点的数组  
//     return brr || [];  
// } 

export default arrToTree;